package controlador;


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.JComponent;

import vista.Gui;


import es.ucm.fdi.gaia.ontobridge.OntoBridge;
import es.ucm.fdi.gaia.ontobridge.test.gui.PnlConceptsAndInstancesTree;

import modelo.MotorOntobridge;
import modelo.MotorOntobridge.Busco;

public class Controlador {
	
	private MotorOntobridge modelo;
	private Gui vista;

	public Controlador()
	{
		modelo=new MotorOntobridge();
		vista=new Gui(this);
	}
	
	public JComponent dameArbolOntologia()
	{
		//panel.setSize(new Dimension(300,600));
		//panel.setPreferredSize(new Dimension(300,600));
		//PnlConceptsTree tree = new PnlConceptsTree(modelo.getOntologia());
		PnlConceptsAndInstancesTree tree = new PnlConceptsAndInstancesTree(modelo.getOntologia(),true);
		return tree;
	}
	
	public OntoBridge dameOntologia(){
		return modelo.getOntologia();
	}
	
	public String consultaActoresMasTresPeliculas()
	{
		return modelo.consultaActoresMasTresPeliculas();
	}
	
	public String consultaPeliculasEspanolas()
	{
		return modelo.consultaPeliculasEspanolas();
	}
	
	public ArrayList<String> inicializarValoresMarcadoPeliculas(){
		return modelo.listAllInstanceOf("Pelicula");
	}
	
	public ArrayList<String> inicializarValoresMarcadoIndividuos(){
		return modelo.listAllInstanceOf("Individuo");
	}
	
	public ArrayList<String> inicializarValoresMarcadoGestos(){
		return modelo.listAllInstanceOf("Gestos");
	}
	
	public ArrayList<String> inicializarValoresMarcadoObjetos(){
		return modelo.listAllInstanceOf("Objetos");
	}
	public void addFoto(File f){
		modelo.addFoto(f);
		modelo.salvarCambios();
	}
	public void marcarFoto(String nombre, String propiedad, String valor){
		modelo.marcarInstancia(nombre, propiedad, valor);
		modelo.salvarCambios();
	}
	
	/*metodos para el panel de busqueda*/
	
	/*metodo para rellenar listas de datos*/
	
	public ArrayList<String> consultarValoresPanelBusquedas(Busco loBuscado)
	{
		return modelo.ConsultaOntologia(loBuscado);
	}
	
	/*metodo para realizar la consulta*/
	
	public void buscarFotos(int seleccionAparece,ArrayList<String> valoresAparece,ArrayList<String> valoresPertenece,ArrayList<String> valoresEscena)
	{
		ArrayList<String> fotos=modelo.buscarFotos(seleccionAparece,valoresAparece,valoresPertenece,valoresEscena);
		
		int i=0;
		for(String s:fotos){
			i++;
			System.out.println(i+" "+s+"\n");
		}
		vista.ponerFotosEnVisorBusqueda(fotos);
	}
}
